我上一次參加鐵人賽已經是三年前,以前做 Side Project 比較常把重點放在把功能完成,想到一個需求就開始查資料、寫程式,最後把它做出來。
但現在 AI 已經能幫忙完成很多事情,把功能做出來反而沒有以前困難了。我開始思考另一件事:如果功能大家都做得出來,那真正重要的是什麼?
最後我決定要分享的不是怎麼寫,而是為什麼這樣設計。
一開始我其實想了不少主題,最後會選散步 App 也沒有什麼特別的原因,只是因為它是我真的會每天用到的東西,也比起其他題目更實用。
本來我以為散步 App 不就是一個取得 GPS、畫出路線、記錄距離和時間的 App 嗎?但真正開始規劃之後才發現,定位反而只是開始,還有很多問題需要考慮,比如:
網路上其實已經有很多 React Native、Google Maps、SQLite 或 Google Maps 的教學,所以我不打算把完整程式碼全部貼上來,也不會一步一步帶著大家把 App 做出來,真的就是單純分享設計思路。
暫定的 30 天大綱如下:
Day 1 | 為什麼我要做一個散步 App?
Day 2 | 設計專案架構
Day 3 | Google 登入流程設計
Day 4 | 建立後端開發環境
Day 5 | 定位功能(1)——開始取得使用者位置
Day 6 | 定位功能(2)——GPS 不準怎麼辦?
Day 7 | 定位功能(3)——離開 App 還能繼續記錄嗎?
Day 8 | 定位功能(4)——繪製路線預覽
Day 9 | 定位功能(5)——統計散步數據
Day 10 | 推薦路線(1)——推薦路線是怎麼產生的?
Day 11 | 推薦路線(2)——能走的路很多,該選哪一條?
Day 12 | 推薦路線(3)——什麼時候才能開始這條推薦路線?
Day 13 | 推薦路線(4)——怎麼計算路線完成率?
Day 14 | 推薦路線(5)——推薦路線畫出來了,但使用者真的知道怎麼走嗎?
Day 15 | 外面在下雨?結合天氣給出散步建議
Day 16 | 根據散步習慣,自動決定提醒時間
Day 17 | 完成散步統計頁——把每次散步變成看得懂的趨勢
Day 18 | 散步成就系統怎麼設計?
Day 19 | 地圖效能——GPS 點越多,地圖為什麼越卡?
Day 20 | 離線模式(1)——SQLite 解決不了真正的離線問題
Day 21 | 離線模式(2)——設計一套不會遺失 GPS 的同步機制
Day 22 | 離線模式(3)——同步失敗、衝突與 Retry Queue
Day 23 | Widget(1)——React Native 的資料怎麼交給原生 Widget?
Day 24 | Widget(2)——跨平台 Widget 架構怎麼設計?
Day 25 | Widget(3)——資料更新了,Widget 為什麼沒有立刻改變?
Day 26 | 散步分析——那些統計數字,到底代表什麼?
Day 27 | AI 散步教練(1)——為什麼我不相信 AI 的回答?
Day 28 | AI 散步教練(2)——AI 的回答,真的能相信嗎?
Day 29 | 排行榜真的能讓大家更愛散步嗎?
Day 30 | 結語
這些標題之後可能還會再調整,但整體方向應該不會有太大的變化。
希望等到三十天結束時,完成的不只是另一個 Side Project,而是一款每個設計決策都有理由、真正能每天使用的散步 App。